【GWにおすすめ】サーバーレス開発部でおすすめされた技術書を17冊紹介します
今月入社したサーバーレス開発部の佐藤です。ジョインブログから初めての投稿です。
札幌オフィス勤務予定なのですが、札幌にサーバーレス開発部のメンバーがいないため、1ヶ月間、会社の文化になれるために東京の岩本町オフィスに出社しています。前職からの働きかたのギャップが激しいですが、毎日楽しく仕事をしています。
先日、サーバーレス開発部のSlackチャンネルで、おすすめの技術書を紹介してくれという雑なポストをしたところ、すごい勢いで技術書が流れてきたので、保存する意味も込めてブログにまとめてみました。
おすすめ理由については、サーバーレス開発部の方々に直接聞いたものを載せています。
おすすめされた技術書
Webを支える技術
おすすめ理由
- 当たり前に使っているWebやREST、HTMLなどベースとなる技術の歴史からふりかえっており単純に読み物として面白いです
- 普及している技術の思想と背景を知っていると、実務での設計や実装でも触れる機会が多いため後からリファレンス的にも使えます
- サーバーレス開発においても実用的です
WebAPI The Good Parts
おすすめ理由
WebAPIを設計する際のベストプラクティスを簡潔に解説してくれています
- URL設計
- エンドポイント設計
- レスポンスデータ設計
- HTTPメソッドについて
- HTTPステータスコード
- バージョン
体系的に学ぶ安全なWebアプリケーションの作りかた
おすすめ理由
- 攻撃手法や脆弱性に対する解説が分かりやすいです
- サーバーレスで開発すればセキュリティの考慮は不要になる。という訳ではないので、広く攻撃手法、防御手法の知識をつけることは重要だと思います
ハイパフォーマンス ブラウザネットワーキング
おすすめ理由
- 普段使っているHTTPやTCPといったプロトコルの仕様について一歩深掘りして知ることができます
- AWSのマネージドサービスがどう行った設定を裏でよしなにやってくれているのか理解が深まります
サーバ/インフラを支える技術
おすすめ理由
- 「推測するな、計測せよ」は名言
- 「負荷」とは何か?パフォーマンストラブルを解析するための論理的な考え方やパフォーマンスチューニングの手法について理解を深めることができます
- topコマンドやsarコマンドの出力をどう読みとれば良いのか?実践的な内容を学ぶことができます
ふつうのlinuxプログラミング
おすすめ理由
- ストリームやプロセス、シグナルといった基本的な概念を勉強するのにピッタリな本
- 簡単なレベルではあるが、C言語でプログラムを書くことで、低レイヤの処理に対する理解が深まります
失敗から学ぶRDBの正しい歩きかた
おすすめ理由
- 著者のそーだい氏が今まで各所でやっていたデータベースの失敗談や学びは質が高く、それの集大成になっているはずなので、それを逐一探すよりこれ読んだ方が絶対お得です
- サーバーレス開発部ではDynamoDBやS3を使うことが多いけど、KVSやベタファイルを活かすためにもRDBはちゃんと学んでおきたいです
SQLアンチパターン
おすすめ理由
- RDBでどうやって木構造のデータを表現するか、case文を使ったクロス集計のSQL、などのテクニックを身に付けることができます
- DBの物理設計、SQL、アプリケーション設計など、幅広い視点からアンチパターンを学ぶことができます
リーダブルコード
おすすめ理由
- コードを書く全ての人間が読むべき本
- コードは書くよりも読む時間が圧倒的に多いため、読みやすいコードの重要性と書き方を教えてくれます
Adaptive Code
おすすめ理由
- Adaptiveなコード(適応性のあるコード)の書き方を具体例を交えつつ実践的に紹介されています
- 「オブジェクト指向」や「デザインパターン」って何が嬉しいの? に対する回答の一つ
- 特に「インターフェース」の使い方や重要性を力強く紹介しています
Clean Architecture
おすすめ理由
- ソフトウエアの構造に対するアプローチが紹介されています
- オブジェクト指向よりも上位かつ抽象的な概念(だと思います)
- それ故に理解するまで時間がかかるが、「完全に理解した」状態になると設計力が上がること間違いなしです
The Phoenix Project
おすすめ理由
- DevOpsの考え方をITのツールを使わずに説明してくれているため、わかりやすいです
誰のためのデザイン?
おすすめ理由
- 「デザイン(おおよそ設計という意味で)」がどういうものか、ユーザーエクスペリエンスがなぜ必要かがわかる本
- 日常に溢れる使いづらい道具への批判から人間がUIを理解するためのメンタルモデルを展開しています
- 初版ではアフォーダンスという言葉を誤用しているので、改訂版を読むと良いです
テスト駆動開発
おすすめ理由
- TDDとはなにか? を順を追いながら丁寧に解説しています
- テストだけでなく「テストしやすい構造にするための設計とは?」といった部分まで意識させてくれます
知識ゼロから学ぶソフトフェアテスト
おすすめ理由
- テストは品質を担保するために必要だけど、闇雲にやればいいというものではなくて、ちゃんとやり方があるんだよ、ということを体系的なところから教えてくれます
- もっと深い話はたくさんあるけど、まずはこの本に乗っている手法でテスト項目を設計するだけでもテストの品質が変わります
なぜ、システム開発は必ずモメるのか?
おすすめ理由
- 物語形式になってて読みやすいです
- 開発者は技術のことだけ知っていれば良いという訳ではなく、契約周りの知識やプロジェクトの進行についての知識を付けるのも重要です
個人開発がやりたくなる本
個人的にまず読もうと思っている本
Webを支える技術
サーバーレスではWebAPIの開発をすることが多いです。REST、URI設計などをすることが多いので、設計のベストプラクティスを知ること。また、HTTPの基本、メソッド、ヘッダ、ステータスコードなど、雰囲気で開発してしまっている部分もあるので、そういう知識の復習や裏付けとしても読んでおきたいと思っています。
サーバ/インフラを支える技術
サーバーレスだからこそ、インフラの知識やAWSがラップしてくれている部分の知識を深めることにより、効率的に開発ができると思っています。個人的にインフラの知識が弱いので、読んでおきたいと思っています。
知識ゼロから学ぶソフトウェアテスト
クラスメソッドにジョインしてから、業務でテストを書くことが多くなりました。今まで、業務でテストを書くことがあまりなかったので、テスト手法の基礎や自動テスト、テストの書き方などを勉強する必要があります。リポジトリの先輩方のテストコードを見て勉強するのも良いですが、それだと断片的な知識になってしまいそうなので、テストの基礎を固めるためにも読んでおきたいと思っています。
まとめ
サーバーレス開発部の方々からおすすめされた本ですが、サーバーレス関連の書籍がないのが印象的でした。やはり、サーバーレスとは言っても基礎的な技術が重要ということがわかりました。これからゴールデンウィーク10連休も待っているので、興味がある本があればぜひ読んでみてください。